1.首先新建目录replset用来存数据库文件,在replset下新建三个目录,db,db1,db2.
1 | mongod --port 270xx --dbpath=\replset\dbx\ --replSet replset(这里端口测试依次为27018,27019,27020)打开三个数据库服务, |
登录其中一个mongo shell,输入1
2
3
4
5
6
7
8
9
10
11config = { _id:"replset",
members:[
{_id:0,host:"127.0.0.1:27018"},
{_id:1,host:"127.0.0.1:27019"},
{_id:2,host:"127.0.0.1:27020"}
]}
2.接着初始化配置
1 | rs.initiate(config) |
如果出现错误,code为93
解决方法:请注意是否_id值是否写错了,应该为 _id:”replset”
3. 查看副本集的情况
1 | rs.status() |
Problem:
在SECONDARY数据库输入读取命令出错,errmsg:not master,且不能写入数据,查资料可知
Reason:
首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。
对于replica set 中的secondary 节点默认是不可读的
Try:
设置db.getMongo().setSlaveOk()即可正常读数据